import axios from "axios"
import Vue from "vue"
import { Notification } from 'element-ui'
import router from '@/router'

/**
 * axios.create() 创建一个新的axios, 在原有的axios 的基础上做了增强
 */
const http = axios.create({
    baseURL: 'http://localhost:8082'
})

/**
 * 1.这里一旦加上拦截器之后，那么我们所有请求都会走该拦截器
 * 2.
 */
http.interceptors.request.use(config => {
    const token = Vue.$cookies.get('token')
    if (token) {
        config.headers.Authorization = token
    }
    return config
})

/**
 * 响应拦截, use() 接受两个参数：
 *   1.第一个参数表示正常；
 *   2.第二个参数表示错误的时候走的代码, 换句话来说，就是状态码 >=400
 */
http.interceptors.response.use(res => {
    return res
}, err => {
    // 服务器端返回401
    if (401 === err.response.status) {
        Notification({
                title: '提示',
                message: '登录已过期，请重新登录'
            })
            // 异步清除 cookie
        Vue.$cookies.remove('token')
        router.push('/login')
        return
    }
    if (403 == err.response.status) {

    }
    /*
    if(500 === err.response.status) {

    }

    if(404 === err.response.status) {

    }
    */
})

export default http